import constants from './consts'
import message from './message'
import messagebox from './messagebox'
import cache from './cache'
import download from './download'
import authorizer from '../authorize'
import Dict from './system.dict'
import getConfigValue from './system.config'
import dayjs from 'dayjs'
export default {
  install (Vue) {
    // 常量
    Vue.prototype.$const = constants
    // 提醒对象
    Vue.prototype.$tip = message
    // 提示框对象
    Vue.prototype.$dialog = messagebox
    // 缓存对象
    Vue.prototype.$cache = cache
    // 获取配置值方法
    Vue.prototype.$c = getConfigValue
    // 获取字典标签方法
    Vue.prototype.$d = Dict.getDictLabel
    // 获取字典配置方法
    Vue.prototype.$dc = Dict.getDictConfig
    // dayjs对象
    Vue.prototype.$dayjs = dayjs
    // 下载文件
    Vue.prototype.$download = download
    // 判断是否为测试模式
    Vue.prototype.$isTesting = process.env.VUE_APP_MODE === 'testing'
    // 判断是否为DEBUG模式
    Vue.prototype.$isDebugging = process.env.VUE_APP_DEBUG === 'on'
    // 增加全局权限方法
    Vue.prototype.$hasRoles = authorizer.hasRoles
    Vue.prototype.$hasAnyRoles = authorizer.hasAnyRoles
    Vue.prototype.$hasPermissions = authorizer.hasPermissions
    Vue.prototype.$hasAnyPermissions = authorizer.hasAnyPermissions
    // 获取图片访问路径
    Vue.prototype.$getImageURL = (fileKey) => {
      return process.env.VUE_APP_COMMON_IMAGE_PREFIX + fileKey
    }
    // 获取附件下载路径
    Vue.prototype.$getAttachURL = (fileKey, filename) => {
      let url = process.env.VUE_APP_COMMON_ATTACH_PREFIX + fileKey
      if (filename != null && filename.trim().length !== 0) {
        url += `&fn=${filename}`
      }
      return url
    }
  }
}
